Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.12.2009, 21:31
Кандидат Javascript-наук
Отправить личное сообщение для jetli13 Посмотреть профиль Найти все сообщения от jetli13
 
Регистрация: 25.11.2009
Сообщений: 109

Динамическая подгрузка javascript
Здравствуйте!
Хотелось бы услашать мнения (как за так и против), по поводу такой ситуации.

На странице есть выпадайка (календарь). Открывается он щелчком по span, при этом в head добавляется нода с src необходимого для обслуживания яваскрипта. Запрос уходит синхронный. Человек ждет ок.1-1.5 секунд пока форма появится.
Аргументы которые выдвегаются за такой подход -
1)скрипт грузится только при необходимости
2) при загрузке странице человек ждем меньшее количество времяни (скрипт весит 60 килобайт)
3) призагрузке стриницы происходит около 60 запросов к серверу (картинки, css и прочее), а браузеры ограничиваются ок 30 одновременными запросами. Соответственно, так (таким подходом) мы сокращаем количество запросов.

И другое мнение-
подключить скрипт сразу и фиг бы с ним. Зато при клике по span сразу появится календарь.

Как вы считаете что лучше, или может есть компромис.
Ответить с цитированием
  #2 (permalink)  
Старый 15.12.2009, 21:47
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от jetli13
скрипт грузится только при необходимости
Можно загрузить скрипт со всеми в одном файле - тем самым положим его в кеш.
Сообщение от jetli13
при загрузке странице человек ждем меньшее количество времяни (скрипт весит 60 килобайт)
Только первый раз, ибо смотри первый пункт.
Сообщение от jetli13
призагрузке стриницы происходит около 60 запросов к серверу (картинки, css и прочее), а браузеры ограничиваются ок 30 одновременными запросами. Соответственно, так (таким подходом) мы сокращаем количество запросов.
Во первых - откуда взялась цифра 30? Сейчас я точно не вспомню, но по последней спецификации HTTP - их 4 (поправьте, если ошибаюсь - под рукой её нет) на каждый домен. Само собой, что в разных браузерах реализовано это по-разному, где-то и до 8.
Во вторых - сократить количество запросов можно только уменьшив количество самих объектов. При большом количестве элементов сайта в первую очередь необходимо разнести исходные ресурсы по разным поддоменам - картинки в img, скрипты в js, стили в css и т.д. Таким образом можно увеличить скорость загрузки (отображения) сайта в целом. Так же хочу упомянуть о том, что все скрипты необходимо размещать перед закрывающимся тегом body, а стили наоборот - в head.

По остальным моментам можно почитать тут.

Ну и вывод такой - приаттачь свой скрипт к остальным (ому).
Ответить с цитированием
  #3 (permalink)  
Старый 15.12.2009, 21:49
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

лучше все подключаемые скрипты на странице объеденить в один файл, и запаковать packer-ом(или отдавать в gz-сжатии)
таким образом уменьшится и количество запросов, и суммарный размер
Ответить с цитированием
  #4 (permalink)  
Старый 15.12.2009, 22:09
Кандидат Javascript-наук
Отправить личное сообщение для jetli13 Посмотреть профиль Найти все сообщения от jetli13
 
Регистрация: 25.11.2009
Сообщений: 109

Сообщение от B~Vladi Посмотреть сообщение
Ну и вывод такой - приаттачь свой скрипт к остальным (ому).
т.е. при невозможности сейчас все скрипты объеденить в один файл то второй подход предпочтительней? В смысле грузить скритп одновременно со страницой.
Ответить с цитированием
  #5 (permalink)  
Старый 16.12.2009, 01:05
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от B~Vladi
Так же хочу упомянуть о том, что все скрипты необходимо размещать перед закрывающимся тегом body, а стили наоборот - в head.
Всегда удивлялся почему. А если будут узаться скрипты до их загрузки. Всегда хотел узнать не будет ли ошибок в случае если размещать скрипты в конце? Благо мой движок позволяет это исправить переписав 4 буквы... интересно узнать ответ...
Сообщение от jetli13
2) при загрузке странице человек ждем меньшее количество времяни (скрипт весит 60 килобайт)
мм можно увидеть код этого скрипта ? че там за календарь в 60кбайт? половина jQuery?

Последний раз редактировалось PeaceCoder, 16.12.2009 в 01:07.
Ответить с цитированием
  #6 (permalink)  
Старый 16.12.2009, 09:11
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от PeaceCoder
Всегда удивлялся почему. А если будут узаться скрипты до их загрузки. Всегда хотел узнать не будет ли ошибок в случае если размещать скрипты в конце? Благо мой движок позволяет это исправить переписав 4 буквы... интересно узнать ответ...
Как правило все скрипты вызывают по событию domready. Кроссбраузерная реализация этого события достаточно нетривиальна и потенциально опасная, т.к. там хак на хаке. Если же вызывать (а заодно и загружать тогда уж) все скрипты, когда DOM уже заведомо готов (т.е. перед </body>), то событие domready становится не нужно.
Ответить с цитированием
  #7 (permalink)  
Старый 16.12.2009, 10:11
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Да и вообще, на начальном этапе загрузки, они (скрипты) не нужны, разве что если есть необходимость выводить что-то через document.write. Другой момент - когда началась загрузка стилей, скорей всего весь последующий html будет отображаться в соответствии с ними и не будет портиться общая картинка. Тут имеет место психологический фактор - юзеру кажется что страница грузится быстрее.
Ответить с цитированием
  #8 (permalink)  
Старый 16.12.2009, 10:17
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от PeaceCoder
А если будут узаться скрипты до их загрузки.
А когда такое может быть? Разве что упомянутый document.write и то он лично мне никогда не нужен был.
Сообщение от PeaceCoder
Всегда хотел узнать не будет ли ошибок в случае если размещать скрипты в конце?
Если ты будешь обращаться к скриптам до их загрузки - конечно будут ошибки, но, наверно, ты и сам это знаешь.

Последний раз редактировалось B~Vladi, 16.12.2009 в 13:16.
Ответить с цитированием
  #9 (permalink)  
Старый 16.12.2009, 14:37
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

заюзаю скрипты в конце боди. посмотрим с какими проблемами столкнусь.
На счет использования скриптов до загрузки их, я говорил за iniline скрипты. например генерация onclick,onmouseover которые и будут юзать скрипты из библиотек... если говорить про ненавязчивый JS, то что бы привязать обработчик надо указывать для всех уникальный ID. можно конечно поступить по другому. вставлять inline код с проверкой загруженности скрипта... тут уже разные подходы.. если скрипт не будет загружен а пользователь подведет к меню которое должно раскрыться оно не раскроется и пользователь будет еще раз подводить думая что это глюк == дискомфорт.
Как в этой ситуации поступают многие? палка о двух концах. Говорим о скорости отображения, пренебрегая работоспособностью...

вот к чему я веду.
Хотя в случае с подгрузкой скриптов такое тоже наблюдается, но при этом можно хоть оповестить пользователя о загрузке... в моем случае скрипты намертво кешируются в браузере а на сервер только посылается сигнал о проверке версии... что занимает около 0.02мс при стабильной связи.

Последний раз редактировалось PeaceCoder, 16.12.2009 в 14:41.
Ответить с цитированием
  #10 (permalink)  
Старый 16.12.2009, 14:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от PeaceCoder
что бы привязать обработчик надо указывать для всех уникальный ID
Элементы не только по id можно найти.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Собрался силами, собираюсь освоить Javascript walker Общие вопросы Javascript 14 20.03.2012 16:17
Динамическая подгрузка скрипта format1981 Общие вопросы Javascript 7 23.10.2009 12:40
JavaScript на Яндекс.Фотки - почему тормозит браузеры? ZavFirefox Javascript под браузер 23 27.09.2009 19:24
динамическая подгрузка страницы tp0378 Events/DOM/Window 1 14.09.2009 15:37
Динамическая подгрузка JScript Yustas Общие вопросы Javascript 0 04.05.2009 16:31